//
// Created by sjjmw on 2/23/2022.
//

#pragma clang diagnostic push
#pragma ide diagnostic ignored "EndlessLoop"
#ifndef LEETCODE__17_H
#define LEETCODE__17_H

//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
//给你一条马路的长度和若干个车站的位置，请你用程序计算出把树移走后，马路上还剩多少棵树。
bool read_first_num(std::unordered_map<int,int>& num_cnt,int &max_cnt_num){
    int a;
    if(scanf("%d",&a)==EOF){
        return false;
    }
    num_cnt[a]=1;
    max_cnt_num=a;
    return true;
}
int main(){

    std::unordered_map<int,int> num_cnt;
    int max_cnt_num;
    int cnt;
    while(std::cin>>cnt){
        read_first_num(num_cnt,max_cnt_num);
        cnt--;
        while(cnt){

            int a;
            std::cin>>a;
            if(num_cnt.find(a)==num_cnt.end()){
                num_cnt[a]=1;
            }else{
                num_cnt[a]++;
            }
            if(num_cnt[a]>num_cnt[max_cnt_num]){
                max_cnt_num=a;
            } else if(num_cnt[a]==num_cnt[max_cnt_num]){
                if(a<max_cnt_num){
                    max_cnt_num=a;
                }
            }
            cnt--;
        }
        printf("%d\n",max_cnt_num);
        //结束
        num_cnt.clear();
    }
//    while(1){}
    return 0;
}

#endif //LEETCODE__17_H

#pragma clang diagnostic pop